pcworld online logo

Resmi Kayd²rmak

▌lk program ÷rne≡imiz bir okuyucumuzun sorusu ⁿzerine dⁿ■ⁿnⁿldⁿ. Bu okuyucumuz bⁿyⁿk bir resmi kayd²rma τubuklar² yard²m²yla form ⁿzerinde g÷rmek istiyor ve bunu ba■aramad²≡²ndan yak²n²yordu. ▌■te sorunun τ÷zⁿmⁿ:

resim Bir form yarat²n ve 1. resimde oldu≡u gibi kontrolleri ⁿzerine yerle■tirin. Dikkat etmeniz gereken konu, iτinde resim bulunan resim kutusunun arkas²nda bir resim kutusu daha oldu≡udur. Yani formun ⁿzerine bⁿyⁿkτe bir resim kutusu τizdikten sonra bunun iτine ikinci bir resim kutusu τizip buna sabit diskinizdeki bir resmi koymal²s²n²z. (Resmi program²n τal²■t²rma a■amas²nda da yⁿkletebilirsiniz). ▌■te kodlar...

Sub Form_Load()
Const PIXEL = 3
Const NONE = 0
Form1.ScaleMode = PIXEL:  Picture1.ScaleMode = PIXEL

' ▌kinci resim kutusu yⁿklenen resmin bⁿyⁿklⁿ≡ⁿnⁿ al²yor.
   Picture2.AutoSize = True

' ╟erτevelerden kurtulal²m...
   Picture1.BorderStyle = NONE
   Picture2.BorderStyle = NONE

' ▌ki resim kutusunu da resmi g÷stermek iτin haz²rla
  Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, ScaleHeight - HScroll1.Height
  Picture2.Move 0, 0
resim
   ' Yatay kayd²rma τubu≡unu ayarla
   HScroll1.Top = Picture1.Height : HScroll1.Left = 0
   HScroll1.Width = Picture1.Width

   ' Dikey kayd²rma τubu≡unu ayarla
   VScroll1.Top = 0 : VScroll1.Left = Picture1.Width
   VScroll1.Height = Picture1.Height

   ' Kayd²rma τubuklar²n² resmin bⁿyⁿklⁿ≡ⁿne g÷re ayarla
   HScroll1.Max = Picture2.Width - Picture1.Width
   VScroll1.Max = Picture2.Height - Picture1.Height

   ' E≡er iτinde resim olan kutucuk bⁿyⁿk kutucu≡un
   ' boyunu geτmiyorsa kayd²rma τubu≡una gerek yok
   VScroll1.Visible = (Picture1.Height < Picture2.Height)
   HScroll1.Visible = (Picture1.Width < Picture2.Width)
End Sub

Sub Form_Resize()
   ' FormÆun bⁿyⁿklⁿ≡ⁿ de≡i■ti≡inde resmin de
   ' bⁿyⁿklⁿ≡ⁿnⁿ forma g÷re ayarla
   Picture1.Height = Form1.Height
   Picture1.Width = Form1.Width
 
  ' Kayd²rma τubuklar²n² ve resmi tekrar ayarla
   Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, ScaleHeight - HScroll1.Height
   Picture2.Move 0, 0 : HScroll1.Top = Picture1.Height
   HScroll1.Left = 0 : HScroll1.Width = Picture1.Width
   VScroll1.Top = 0 : VScroll1.Left = Picture1.Width
   VScroll1.Height = Picture1.Height
   HScroll1.Max = Picture2.Width - Picture1.Width
   VScroll1.Max = Picture2.Height - Picture1.Height
   ' Kayd²rma τubuklar²na gerek var m²?
   VScroll1.Visible = (Picture1.Height < Picture2.Height)
   HScroll1.Visible = (Picture1.Width < Picture2.Width)
End Sub

Sub HScroll1_Change()
' ikinci resim eksi de≡er almaktad²r τⁿnkⁿ kayd²rma
' τubu≡unu sa≡a kayd²rd²≡²n²zda resim sola kaymal²d²r
   Picture2.Left = -HScroll1.Value
End Sub

Sub VScroll1_Change()
  Picture2.Top = -VScroll1.Value
End Sub